// 在页面或组件中导入
import validate from 'wechat-validate'

Page({
  // 通过 behaviors 注入 validate 方法
  behaviors: [validate],
  // 定义表单数据的验证规则
  rules: {
    mobile: [
      { required: true, message: '请填写手机号码!' },
      { pattern: /^1[3-9]\d{9}$/, message: '请检查手机号码是否正确!' }
    ],
    code: [
      { required: true, message: '请填写验证码!' },
      { pattern: /^\d{6}$/, message: '请检查验证码是否正确!' }
    ]
  },
  data: {
    // 控制是否发送验证码
    countDownVisible: false,
    // 手机号
    mobile: '',
    // 验证码
    code: ''
  },
  onLoad (query) {
    // console.log(query)
    this.query = query
    // console.log(this.query)
  },

  countDownChange (ev) {
    this.setData({
      // 倒计时组件数据
      timeData: ev.detail,
      // 是否显示倒计时组件
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0
    })
  },

  // 点击获取验证码
  async getSMSCode () {
    // 校验通过后再发送请求
    // 单独只验证 mobile 这个数据
    const { valid, message } = this.validate('mobile')
    // console.log(valid, dataKey, message)
    // 如果校验不通过  valid则会返回false  提示用户调谐手机号
    if (!valid) return wx.utils.toast(message)

    // 如果校验通过

    // 调用验证码接口
    const res = await wx.http.get('/code', { mobile: this.data.mobile })
    console.log(res)
    // 开启获取验证码
    this.setData({
      countDownVisible: true
    })
  },
  // 登录表单提交
  async onSubmit () {
    const { code, mobile } = this.data
    // 校验通过后再发送请求
    // console.log(code, mobile)
    // 验证码 rules 中定义的全部数据
    const isAllValid = this.validate()
    if (!isAllValid) return

    // 发送请求
    const res = await wx.http.post('/login', { code, mobile })
    console.log(res)
    // 登录提示
    wx.utils.toast(res.message)
    const app = getApp()
    // app.token = res.data.token
    // wx.setStorageSync('token', res.data.token)
    app.setToken('token', res.data.token)
    app.setToken('refreshToken', res.data.refreshToken)
    // 回跳
    wx.redirectTo({
      // 如果是从其他页面跳转到登录页面 登录成功后再跳转回去   如果直接打开的是登录页 则跳转到首页
      url: this.query.redirectUrl || 'pages/index/index'
    })
  }
})
